home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 June / Macworld (1999-06).dmg / Shareware World / Info / For Developers / MacZoop2.0.sea / MacZoop2.0 / Projects / Basic MacZoop Project / ProjectSettings.h < prev    next >
Text File  |  1999-02-11  |  15KB  |  377 lines

  1. /*************************************************************************************************
  2. *
  3. *
  4. *            MacZoop 2.0             - "the framework for the rest of us"             
  5. *
  6. *
  7. *
  8. *            ProjectSettings.h        -- compiler flags and other settings specific to your
  9. *                                        project. Copy this file and change things as you
  10. *                                        need them. This file has the default settings.
  11. *
  12. *
  13. *            © 1996, Graham Cox
  14. *
  15. *
  16. *
  17. *
  18. *************************************************************************************************/
  19.  
  20.  
  21. #pragma once
  22.  
  23. #ifndef __PROJECTSETTINGS__
  24. #define    __PROJECTSETTINGS__
  25.  
  26. #define        ON        1
  27. #define        OFF        0
  28.  
  29. //----------------------------------------------------------------------------------------------
  30.  
  31. // *************    START-UP APPLICATION CONSTRUCTION   **************
  32.  
  33. // VERY IMPORTANT: Here, you must declare the name of your application class (a subclass of
  34. // ZApplication). MacZoop requires this name in order to correctly start up your app. For
  35. // example, if your app class is called "ZMyFunkyApplication", then set APP_CLASS_NAME to
  36. // exactly this name. Do not put the name in quotes, nor put a semi-colon after it. It is
  37. // also ESSENTIAL that the header file that describes your class is called <APP_CLASS_NAME>.h
  38. // otherwise the project will not build. So, e.g. your header file for ZFunkyApplication MUST
  39. // be named ZFunkyApplication.h
  40.  
  41.  
  42. #define        APP_CLASS_NAME                    ZApplication
  43.  
  44.  
  45. // a similar technique is available if your app is simple, and would only be subclassing
  46. // ZApplication in order to make a different kind of default window object. If this is the
  47. // case, you can avoid this subclassing requirement by defining a macro called
  48. // USER_DEFAULT_WINDOW_TYPE (spelt exactly thus). You should set this macro to the exact name
  49. // of your default window class. e.g:-
  50. // #define    USER_DEFAULT_WINDOW_TYPE    ZMyFunkyWindow
  51. // Note that by default, this is NOT defined, and ZApplication thus makes ZWindow objects
  52. // as standard. Remember to set the above (APP_CLASS_NAME) to ZApplication if you are taking
  53. // advantage of this.
  54.  
  55.  
  56. //----------------------------------------------------------------------------------------------
  57.  
  58. // ZApplication compilation options:
  59.  
  60. // Every application should have a "signature"- a 32-bit number that is uniquely assigned to it.
  61. // Apple keep a register of application signatures to ensure they are unique. The signature is
  62. // declared as part of the 'BNDL' resource, if you have one. MacZoop will pick up this value
  63. // and assign it to <gAppSignature>. If you do not have a BNDL resource, or for backward
  64. // compatibility want to set the signature yourself, set the following to OFF: (default ON)
  65.  
  66.  
  67. #define        USE_SIGNATURE_FROM_BNDL            ON
  68.  
  69.  
  70. // if the above is OFF, you can set up your signature here.The default signature of this
  71. // application is 'ZAPP' (n.b. NOT registered with Apple!).
  72.  
  73.  
  74. #if USE_SIGNATURE_FROM_BNDL == OFF
  75. #define        kApplicationSignature            'ZAPP'
  76. #else
  77.  
  78. // you can automatically build the application's list of openable file types by looking at
  79. // the 'FREF' resources that it has. One of these will generally be 'APPL' or other executable
  80. // type which are NEVER added to the list, but other file types are if this is ON. This is only
  81. // available if USE_SIGNATURE_FROM_BNDL is also ON (Default: OFF):
  82.  
  83. #define        CHECK_FREF_RESOURCE_TYPES        ON
  84. #endif
  85.  
  86. //----------------------------------------------------------------------------------------------
  87.  
  88. // to deal with low-memory crises, ZApplication allocates and manages a "shortage fund" which
  89. // it can release when the memory manager gets into trouble. BY default this is 64K, but you
  90. // can set it to whatever you want by setting this #define. This fund is designed to cope with
  91. // dire emergencies only- you may need to do more sophisticated memory management for complex
  92. // or memory-intensive applications.
  93.  
  94.  
  95. #define        kShortageFundSize                65536    // leave 64K in reserve for emergencies.
  96.  
  97.  
  98. //----------------------------------------------------------------------------------------------
  99.  
  100. // By default, MacZoop will work like a normal Mac application in that it will open a new
  101. // "untitled" window at startup if no files are passed to it. If you want to make a "faceless"
  102. // application, turn OFF the following define to suppress the opening of the initial window.
  103.  
  104. // Default is ON
  105.  
  106. #define        MAKE_UNTITLED_STARTUP_WINDOW    ON
  107.  
  108.  
  109. //----------------------------------------------------------------------------------------------
  110.  
  111. // When the app quits, time is saved by not bothering to actively release a number of objects
  112. // and handles, etc. The MacOS will free the entire application heap in one go when the app
  113. // terminates, so this is quite OK, and makes quitting happen faster. However, if you need
  114. // a comprehensive clean-up for some reason, or a relying on particular destructors being
  115. // called on quit, set this to ON.
  116.  
  117. // Default is OFF (faster quitting)
  118.  
  119. #define        _SLOW_BUT_SURE_DESTRUCTION        OFF
  120.  
  121.  
  122. //----------------------------------------------------------------------------------------------
  123.  
  124. // comment out the following if you do not want printing support
  125.  
  126. // Default is ON
  127.  
  128. #define        PRINTING_ON                        OFF
  129.  
  130. // Printing options:
  131.  
  132. // If you want to use a progress bar when printing ("Spooling page <n> of <y> pages") then set
  133. // this define to ON.
  134.  
  135. // Default is OFF
  136.  
  137. #define        _PRINT_USING_PROGRESS_BAR        OFF
  138.  
  139.  
  140. //----------------------------------------------------------------------------------------------
  141.  
  142. // if you wish to use the Appearance Manager-savvy parts of MacZoop when running under
  143. // System 8, set the following to ON. If undefined, will implement standard System 7 behaviour.
  144. // If you compile with this defined, things should still work on previous system versions.
  145. // Note that if you are building an appearance aware app with MacZoop, you need to link with
  146. // the AppearanceLib library as well as define this.
  147.  
  148. // Default is OFF
  149.  
  150.  
  151. #define        APPEARANCE_MGR_AWARE            OFF
  152.  
  153.  
  154. #if APPEARANCE_MGR_AWARE
  155.  
  156. #include    <appearance.h>
  157.  
  158. #ifndef kThemeStateInactive
  159. #define    kThemeStateInactive    kThemeStateDisabled
  160. #endif
  161.  
  162. #endif
  163.  
  164. // if you wish to support proportional thumbs in scrollbars, set this to ON. Also requires
  165. // Appearance 1.1 or later and "ControlsLib" in your project. This setting only affects scrollbars
  166. // that are part of ZScroller, not those in lists, etc, which are managed by the Mac toolbox.
  167.  
  168. #if APPEARANCE_MGR_AWARE
  169.     #define    USE_PROPORTIONAL_SCROLLBARS        OFF
  170. #endif
  171.  
  172.  
  173. //----------------------------------------------------------------------------------------------
  174.  
  175. // ZWindowManager compilation options:
  176.  
  177. // HIG says that all floating windows are peers of one another and thus all show the active
  178. // state regardless of their ordering within their layer. Some programmers may prefer the
  179. // other common behaviour where only one floater is active at a time. To get this latter
  180. // behaviour,  set the following define to OFF and recompile. n.b. windows will still receive
  181. // their activate/deactivate messages- this only affects the window hiliting.
  182.  
  183. // Default is ON
  184.  
  185. #define    _ALL_FLOATERS_ACTIVE                ON
  186.  
  187. // this window manager does not allow activate events to be sent by the mac toolbox, but
  188. // instead calls the event handler directly with the relevant parameters. In most cases, your
  189. // code won't be aware of this, but if you really need to get a "real" activation event, 
  190. // comment in the following define. This makes the window manager post a real activation event
  191. // instead of "faking" one.
  192.  
  193. // Default is OFF
  194.  
  195. #define    _ACTIVATE_EVENTS_ARE_REAL            OFF
  196.  
  197. // When a window is picked up by its title bar for dragging, it is first brought to the front
  198. // of its layer (unless the command key is down). This selection can result in a non-updated
  199. // area of the window appearing until the drag is completed, at which point the window is
  200. // refreshed. This is the normal behaviour. However, this window manager object can prevent
  201. // this by forcing the update to occur immediately. This may give better perceived performance,
  202. // since the user won't be waiting for the update to come along later. To get this behaviour,
  203. // comment in the following:
  204.  
  205. // Default is ON
  206.  
  207. #define    _UPDATE_ON_SELECT                    ON
  208.  
  209. // Similarly, in the same situation, we select the window before dragging it. This is not what
  210. // DragWindow does- it selects the window after dragging. If you really desire this behaviour
  211. // instead, comment in the following:
  212.  
  213. // Default is OFF
  214.  
  215. #define    _DRAGWINDOW_COMPATIBLE                OFF
  216.  
  217. // If you are taking advantage of the automatic support for a "Windows" menu, you might want to
  218. // list the windows alphabetically. The default is to list them in order of creation. To list
  219. // alphabetically, turn ON the following:
  220.  
  221. // Default is OFF
  222.  
  223. #define    _ALPHABETICAL_WINDOWS_MENU            OFF
  224.  
  225. // If you's like command key equivalents cmd-0 to cmd-9 for the first ten windows in this menu,
  226. // turn ON the following:
  227.  
  228. // Default is ON
  229.  
  230. #define _ENUMERATE_WM_CMDS                    ON
  231.  
  232. // if you'd like windows that have an associated file to popup a directory menu when their
  233. // titles are command-clicked, set this to ON. A menu choice opens the relevant directory
  234. // window in the Finder. The code required to implement this is available  separately-
  235. // called "DirectoryPopup" © by Marco Piovanelli. A version of this code is available in the
  236. // More Classes:Goodies & Extras:DirectoryPopup folder.
  237.  
  238. // Default is OFF
  239.  
  240. #define    _USE_DIR_POPUP                        OFF
  241.  
  242.  
  243. //----------------------------------------------------------------------------------------------
  244.  
  245. // ZMenuBar & ZEventHandler compilation options:
  246.  
  247. // comment IN for automatic mouse-aware menubar hiding (implemented in ZEventHandler)
  248.  
  249. // Default is OFF
  250.  
  251. #define    _AUTO_MBAR_HIDING                    OFF
  252.  
  253.  
  254. //----------------------------------------------------------------------------------------------
  255.  
  256. // ZFile compilation options:
  257.  
  258. // ZFile has methods for automatically building custom icons for a file. This support requires
  259. // that you have "PixmapUtils.cpp" in your project, which adds some overhead. If you don't
  260. // need this support, turn off following which will make things smaller.
  261.  
  262. // Default is ON
  263.  
  264. #define    _CUSTOM_ICON_SUPPORT                OFF
  265.  
  266. //----------------------------------------------------------------------------------------------
  267.  
  268. // Zoom rect effect options:
  269.  
  270. // if you have the drag manager, and your app links to DragLib, and this define is ON, then
  271. // every window you open will have a finder-like "zoom" rect effect. The source of this rect
  272. // is set by SetLocalZoomSource or SetGlobalZoomSource in ZWindowManager.h. This is automatically
  273. // set by menu items, dialog button clicks, etc. You only need to deal with this if you have
  274. // an interface element that spawns a window that is not a menu or a button.
  275.  
  276. // Default is ON
  277.  
  278. #define    _ZOOM_RECT_FX                        ON
  279.  
  280. //----------------------------------------------------------------------------------------------
  281.  
  282. // Window save/restore features:
  283.  
  284. // MacZoop can save and restore your window positions by storing a 'Wpos' resource for a window
  285. // in a nominated resource file (including prefs). Your code has to make the calls for your own
  286. // document windows, but some automatic features are also provided, especially for dialogs.
  287. // These flags control the implementation.
  288.  
  289. // enables the code in general- your project will require at least ZResourceFile and ZPrefsFile
  290. // if ON. The basic code is implemented in ZWindowManager, with a simpler API in ZWindow.
  291.  
  292. #define    _WPOS_WINDOW_PLACEMENT                OFF
  293.  
  294. // enable automatic save/restore for dialogs and floaters:
  295.  
  296. #if _WPOS_WINDOW_PLACEMENT
  297.     #define    _AUTO_WPOS_FOR_DIALOGS            ON
  298.     #define    _AUTO_WPOS_FOR_FLOATERS            ON
  299. #endif
  300.  
  301. //----------------------------------------------------------------------------------------------
  302.  
  303. // progress dialog options:
  304.  
  305. // if OFF, your code needs to check for a cancel of the progress dialog by checking the return
  306. // value of InformProgress(). If ON, the dialog itself throws a cancel exception making it
  307. // even easier to use- however, you may need an exception handler to clean up properly.
  308.  
  309. // Default is ON
  310.  
  311. #define    _CANCEL_PROGRESS_THROWS_EXCEPTION    ON
  312.  
  313. //----------------------------------------------------------------------------------------------
  314.  
  315. // Navigation Services options:
  316.  
  317. // MacOS 7.5.5 and later can use the new Apple Navigation Services instead of StandardFile to
  318. // choose files for opening, saving, etc. This interface is extremely groovy and will be the
  319. // only one supported under Mac OSX. MacZoop can use this right now if you have it installed. If
  320. // you desperately want the old interfaces, turn this option OFF (default is ON). Note that
  321. // you'll get the old interfaces anyway if Navigation is not installed or your system is too
  322. // old. n.b. if ON, you need to add NavigationLib to your project.
  323.  
  324. // Default is ON
  325.  
  326. #define    _USE_NAVIGATION_SERVICES            OFF
  327.  
  328. // Navigation services provides some standard alerts for Save Changes and Revert. At present,
  329. // these are slightly buggy in that they don't position very well over floating windows, and
  330. // in any case the MacZoop ones look nicer. This this additional setting allows you to choose
  331. // which ones to use. Note that using the MacZoop ones does NOT affect Carbon compatibility.
  332.  
  333. #if _USE_NAVIGATION_SERVICES
  334. #define    _USE_NAV_SAVEREVERT_ALERTS            OFF
  335. #endif
  336.  
  337. //---------------------------------------------------------------------------------------------
  338.  
  339. // Mouse tracking
  340.  
  341. // To install a default mouse tracking object in ZWindow and ZScroller, set this to ON. This
  342. // provides a mouse tracking and feedback loop in response to a click in a window automatically,
  343. // which you can receive messages from as it tracks. For backward compatibility, this is
  344. // defaulted to OFF
  345.  
  346. #define    _INSTALL_STD_MOUSE_TRACKING            OFF
  347.  
  348.  
  349. //---------------------------------------------------------------------------------------------
  350.  
  351. // Dialog Options
  352.  
  353. // MacZoop 2.0 blends the old, obsolete ZAdvancedDialog and ZAMDialog classes from 1.x into a
  354. // unified ZDialog class, that supports all items in a standard, consistent way. The original
  355. // so-called "magic" items previously part of ZAdvancedDialog are now built-in to ZDialog, but
  356. // to avoid importing all this code unnecessarily in simpler projects, you can turn off these
  357. // extensions with this flag.
  358.  
  359. // Default is OFF
  360.  
  361. #define    _DIALOG_EXTENSIONS                    OFF
  362.  
  363.  
  364. //---------------------------------------------------------------------------------------------
  365.  
  366. // As a convenience feature, ZCommander is capable of creating and opening a dialog box with
  367. // one call to OpenSubDialog(). However, because ZCommander is a required class but ZDialog
  368. // is not, if you want to leave ZDialog out of a project, you need to turn OFF the following
  369. // setting, which removes all dialog references from the ZCommander code.
  370.  
  371. // Default is ON
  372.  
  373.  
  374. #define    _ZCOMMANDER_DIALOG_AWARE            OFF
  375.  
  376.  
  377. #endif